Example:
var ConnectionString = "Server=sympc33;Database=Airflow;User Id=sa;Password=sqladmin";
var database = new Database();
var connection = database.OpenDatabaseConnection(ConnectionString);
var id1, id2, id3, id4, id5, id6, id7, id8, id9, id10, id11, id12, id13, id14, id15, id16, id17, id18, id19, id20;
function OnServerStart() {
var ob = "server";
id1 = SubscribeToTag("Boolean1", ob, OnTagValueChange);
id2 = SubscribeToTag("Boolean2", ob, OnTagValueChange);
id3 = SubscribeToTag("Boolean3", ob, OnTagValueChange);
id4 = SubscribeToTag("Boolean4", ob, OnTagValueChange);
id5 = SubscribeToTag("Sine1", ob, OnTagValueChange);
id6 = SubscribeToTag("Sine2", ob, OnTagValueChange);
id7 = SubscribeToTag("Sine3", ob, OnTagValueChange);
id8 = SubscribeToTag("Sine4", ob, OnTagValueChange);
id9 = SubscribeToTag("Ramp1", ob, OnTagValueChange);
id10 = SubscribeToTag("Ramp2", ob, OnTagValueChange);
id11 = SubscribeToTag("Ramp3", ob, OnTagValueChange);
id12 = SubscribeToTag("Ramp4", ob, OnTagValueChange);
id13 = SubscribeToTag("Random1", ob, OnTagValueChange);
id14 = SubscribeToTag("Random2", ob, OnTagValueChange);
id15 = SubscribeToTag("Random3", ob, OnTagValueChange);
id16 = SubscribeToTag("Random4", ob, OnTagValueChange);
id17 = SubscribeToTag("User1", ob, OnTagValueChange);
id18 = SubscribeToTag("User2", ob, OnTagValueChange);
id19 = SubscribeToTag("User3", ob, OnTagValueChange);
id20 = SubscribeToTag("User4", ob, OnTagValueChange);
// SubscribeToTag("aaa", ob, OnTagValueChange);
}
function OnServerStop() {
UnSubscribeToTag(id1);
UnSubscribeToTag(id2);
UnSubscribeToTag(id3);
UnSubscribeToTag(id4);
UnSubscribeToTag(id5);
UnSubscribeToTag(id6);
UnSubscribeToTag(id7);
UnSubscribeToTag(id8);
UnSubscribeToTag(id9);
UnSubscribeToTag(id10);
UnSubscribeToTag(id11);
UnSubscribeToTag(id12);
UnSubscribeToTag(id13);
UnSubscribeToTag(id14);
UnSubscribeToTag(id15);
UnSubscribeToTag(id16);
//UnSubscribeToTag(id17);
//UnSubscribeToTag(id18);
//UnSubscribeToTag(id19);
//UnSubscribeToTag(id20);
//UnSubscribeToTag(1000);
}
var c = 1;
function OnTagValueChange(tagName, id, value, quality, theObject) {
WriteToDB(tagName, id, value, quality, theObject, c);
c++;
if (tagName == "Boolean1" && value == 1) {
SendEmail();
}
if (c == 100) {
UnSubscribeToTag(id17);
UnSubscribeToTag(id18);
UnSubscribeToTag(id19);
UnSubscribeToTag(id20);
}
}
function SendEmail() {
LogInfo("SendEmail");
var client = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
client.Credentials = new System.Net.NetworkCredential("[email protected]", "alexzhangtest");
client.EnableSsl = true;
var message = new System.Net.Mail.MailMessage();
message.From = new System.Net.Mail.MailAddress("[email protected]");
message.To.Add(new System.Net.Mail.MailAddress("[email protected]"));
//message.CC.Add(new System.Net.Mail.MailAddress("[email protected]"));
message.Subject = "sent from macro";
message.Body = "Boolean1 is true!!!";
client.Send(message);
LogInfo("SendEmail done");
}
function WriteToDB(tagName, id, value, quality, theObject, c) {
if (connection == null) return;
var command = "insert into TestTagValue (Name, Value, Quality, subID, Count) values (";
if (theObject == null)
command += GetSqlString(tagName);
else
command += GetSqlString(tagName + theObject);
command += ",";
command += GetSqlString(value);
command += ",";
command += GetSqlString(quality);
command += ",";
command += id;
command += ",";
command += c;
command += ")";
database.ExecuteCommand(connection, command);
}
function GetSqlString(value) {
return "'" + value + "'";
}
function Database() {
this.OpenDatabaseConnection = function (connectionStr) {
try {
LogInfo("Try to connect to " + connectionStr)
var connection = new System.Data.SqlClient.SqlConnection(connectionStr);
LogInfo("C: " + connection);
connection.Open();
LogInfo("Connected to database: " + connection);
return connection;
}
catch (err) { LogError("Connection Error: " + err); }
return null;
}
this.ExecuteCommand = function (connection, command) {
if (connection == null) return;
try {
//LogInfo("ExecuteCommand: " + command)
var cmd = new System.Data.SqlClient.SqlCommand(command, connection);
cmd.ExecuteNonQuery();
}
catch (err) { LogError("ExecuteCommand error: " + err); }
}
}
For developers, examples of .NET code to display and set Tag values with WCF can be downloaded from the on-line support site.